home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 4 / Apprentice-Release4.iso / Source Code / C / Applications / MacPerl 5.0.3 / MacPerl Source ƒ / Perl5 / ext / NDBM_File / NDBM_File.xs < prev    next >
Encoding:
Text File  |  1995-07-29  |  1.3 KB  |  76 lines  |  [TEXT/MPS ]

  1. #include "EXTERN.h"
  2. #include "perl.h"
  3. #include "XSUB.h"
  4. #include <ndbm.h>
  5.  
  6. #ifdef macintosh
  7. extern int dbm_error();
  8. extern int dbm_clearerr();
  9. #endif
  10.  
  11. typedef DBM* NDBM_File;
  12. #define dbm_TIEHASH(dbtype,filename,flags,mode) dbm_open(filename,flags,mode)
  13. #define dbm_FETCH(db,key)            dbm_fetch(db,key)
  14. #define dbm_STORE(db,key,value,flags)        dbm_store(db,key,value,flags)
  15. #define dbm_DELETE(db,key)            dbm_delete(db,key)
  16. #define dbm_FIRSTKEY(db)            dbm_firstkey(db)
  17. #define dbm_NEXTKEY(db,key)            dbm_nextkey(db)
  18.  
  19. MODULE = NDBM_File    PACKAGE = NDBM_File    PREFIX = dbm_
  20.  
  21. NDBM_File
  22. dbm_TIEHASH(dbtype, filename, flags, mode)
  23.     char *        dbtype
  24.     char *        filename
  25.     int        flags
  26.     int        mode
  27.  
  28. void
  29. dbm_DESTROY(db)
  30.     NDBM_File    db
  31.     CODE:
  32.     dbm_close(db);
  33.  
  34. datum
  35. dbm_FETCH(db, key)
  36.     NDBM_File    db
  37.     datum        key
  38.  
  39. int
  40. dbm_STORE(db, key, value, flags = DBM_REPLACE)
  41.     NDBM_File    db
  42.     datum        key
  43.     datum        value
  44.     int        flags
  45.     CLEANUP:
  46.     if (RETVAL) {
  47.         if (RETVAL < 0 && errno == EPERM)
  48.         croak("No write permission to ndbm file");
  49.         warn("ndbm store returned %d, errno %d, key \"%s\"",
  50.             RETVAL,errno,key.dptr);
  51.         dbm_clearerr(db);
  52.     }
  53.  
  54. int
  55. dbm_DELETE(db, key)
  56.     NDBM_File    db
  57.     datum        key
  58.  
  59. datum
  60. dbm_FIRSTKEY(db)
  61.     NDBM_File    db
  62.  
  63. datum
  64. dbm_NEXTKEY(db, key)
  65.     NDBM_File    db
  66.     datum        key
  67.  
  68. int
  69. dbm_error(db)
  70.     NDBM_File    db
  71.  
  72. void
  73. dbm_clearerr(db)
  74.     NDBM_File    db
  75.  
  76.